﻿# Copyright (c) 2010 Code Owls LLC
# 
# Permission is hereby granted, free of charge, to any person obtaining a copy 
#	of this software and associated documentation files (the "Software"), 
#	to deal in the Software without restriction, including without limitation 
#	the rights to use, copy, modify, merge, publish, distribute, sublicense, 
#	and/or sell copies of the Software, and to permit persons to whom the 
# 	Software is furnished to do so, subject to the following conditions:
# 
# The above copyright notice and this permission notice shall be included in 
#	all copies or substantial portions of the Software.
# 
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
#	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
#	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
#	THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
#	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
#	FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
#	DEALINGS IN THE SOFTWARE. 
#
#
# for information regarding this project, to request features or 
#	report issues, please see: http://poshrabbit.codeplex.com
#
#
# start-hgmonitor.ps1
#

Import-Module poshrabbit;

. ./config.ps1;
. ./messages.ps1;
	
function get-lastCommit( $url )
{
	Write-Verbose "checking hg log for new changesets...";
	[xml](& hg log "$url" --limit 1 --style xml );
}

$url = $psakeci.hgUrl;

Write-Host 'press any key to stop monitoring source control...';
while( -not $host.UI.RawUI.KeyAvailable )
{
	$log = get-lastCommit $url;
	$changeset = $log.log.logentry.revision;

	$lastChangeset = (-1);
	if( Test-Path $psakeci.hgLastChangesetFileName )
	{
		$lastChangeset = gc $psakeci.hgLastChangesetFileName;
	}
	
	if( $changeset -ne $lastChangeset )
	{
		Write-Verbose "changeset $changeset needs to be published";
		$changeset | Out-File $psakeci.hgLastChangesetFileName;

		publish-changeSetFromLog $url $log.log.logentry;
	}
	
	sleep -Seconds $psakeci.hgPollInterval;
}